package org.aplombh.java.awcing.basic.greedy.rankInequality;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

/**
 * 有 n 个人排队到 1 个水龙头处打水，第 i 个人装满水桶所需的时间是 ti，请问如何安排他们的打水顺序才能使所有人的等待时间之和最小？
 * <p>
 * 输入格式
 * 第一行包含整数 n。
 * <p>
 * 第二行包含 n 个整数，其中第 i 个整数表示第 i 个人装满水桶所花费的时间 ti。
 * <p>
 * 输出格式
 * 输出一个整数，表示最小的等待时间之和。
 * <p>
 * 数据范围
 * 1≤n≤105,
 * 1≤ti≤104
 * 输入样例：
 * 7
 * 3 6 1 4 2 5 7
 * 输出样例：
 * 56
 */
public class LineUpForWater_913 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        LineUpForWater lw = new LineUpForWater(n);
        String[] s = reader.readLine().split(" ");
        for (int i = 0; i < n; i++) {
            lw.t[i] = Integer.parseInt(s[i]);
        }
        System.out.println(lw.solve());
    }
}

class LineUpForWater {
    int N = 100010;
    int[] t = new int[N];
    int n;

    LineUpForWater(int n) {
        this.n = n;
    }

    // 最短时间就是将时间最短的人放在前面
    public long solve() {
        Arrays.sort(t,0,n);

        long res = 0;

        for (int i = 0; i < n; i++) {
            res += (long) t[i] * ( n - i - 1);
        }

        return res;
    }
}
